package org.manekineko.regras;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.manekineko.dao.ResultadoDAO;
import org.manekineko.dao.impl.ResultadoMSDAO;
import org.manekineko.utils.StringUtils;

public class RegraSorteiosAnteriores implements Regra {

	private ResultadoDAO resultadoDAO;
	
	@Override
	public void aplicar(List<Integer[]> p) {
		try {

			List<Integer[]> aRemover = new ArrayList<Integer[]>();
			
			// senas
			for (int i = 0; i < p.size(); i++) {
				String hash = StringUtils.hash(p.get(i), 6);
				if (getResultadoDAO().existeSorteio(hash)){
					aRemover.add(p.get(i));
				}
			}
			
			p.removeAll(aRemover);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String print(Integer[] arg0) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < arg0.length; i++) {
			sb.append(", " + arg0[i]);
		}
		return sb.toString().substring(2);
	}

	private ResultadoDAO getResultadoDAO(){
		if (this.resultadoDAO == null){
			this.resultadoDAO = new ResultadoMSDAO();
		}
		return this.resultadoDAO;
	}
	
	public static void main(String[] args) {
		BufferedReader br = null;

		RegraSorteiosAnteriores rsa = new RegraSorteiosAnteriores();

		try {

			List<Integer[]> prognosticos = new ArrayList<Integer[]>();

			br = new BufferedReader(new FileReader(new File("docs/sena.csv")));
			String line = null;
			while ((line = br.readLine()) != null) {
				prognosticos.add(StringUtils.splitAsIntArray(line));
			}

			rsa.aplicar(prognosticos);
			
			System.out.println(prognosticos);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
